/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package skv.db.abst;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import skv.db.daten.entities.Benutzer;
import skv.db.iface.DbHandler;

/**
 * Die SkvEntity stellt eine persistente Entität einer DB dar.
 * Sie gibt generische abstrakte Methodden vor und implementiert auch eine,
 * da diese steht gleich ist.
 * @author Alex
 */
public abstract class SkvEntity {
    
    protected int id;
    protected DbHandler dbh;
    
    
    public abstract void create();
    public abstract void update();
    public abstract void getMyData();
    public abstract boolean isUnique();
    public abstract void delete();
    
    public void getLastInsertID(){
        dbh.connect();
        ResultSet rs = dbh.doQuery("SELECT LAST_INSERT_ID()");
        try {
            this.id = rs.getInt(1);
        } catch (SQLException ex) {
            Logger.getLogger(Benutzer.class.getName()).log(Level.SEVERE, null, ex);
        }
        finally{
            try {
                rs.close();
            } catch (SQLException ex) {
                Logger.getLogger(SkvEntity.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    public int getId() {
        return id;
    }

    @Override
    public void finalize() throws Throwable {
        delete();
        super.finalize();
    }
    
}
